#pragma once

#include "Misc/EngineEditorMacros.h"
#include "Containers/SharedObjectPtr.h"

#include "Framework/EditorViewModelSubsystem.h"

#include "EditorDefaultPackage.m.h"

class RTexture2D;
class RShader;
class RStaticMesh;
class RAssetObject;
class RMaterial;

RCLASS()
class ENGINEEDITOR_API REditorDefaultPackage : public REditorViewModelSubsystem
{

    ROBJECT
public:

    void Initialize() override;
    void Deinitialize() override;

    static REditorDefaultPackage* Get();

    TSharedObjectPtr<RTexture2D> GetMinimizeIcon();
    TSharedObjectPtr<RTexture2D> GetMaximizeIcon();
    TSharedObjectPtr<RTexture2D> GetRestoreIcon();
    TSharedObjectPtr<RTexture2D> GetCloseIcon();

    TSharedObjectPtr<RTexture2D> GetIcon(const CString& InIconName);

protected:

    TMap<CString,TSharedObjectPtr<RTexture2D>> Icons;
};


namespace WHE
{
    ENGINEEDITOR_API TSharedObjectPtr<RAssetObject> GetEditorDefaultAssetObject();

}